As is known in the art, the underlying principle of direct volume rendering is to sample the volume dataset along rays in an arbitrary direction and to blend these samples together in the frame buffer. Before being alpha-blended, the densities read in the volume are converted to colors (RGBA) with a transfer function that is often encoded as a lookup table. The transfer function assigns color (Red Green Blue (i.e., RGB) and opacity (A) to each voxel, as a function of various attributes such intensity and intensity gradient magnitude. When a sufficient amount of samples are involved the result is a seamless image.
In computer graphics, the employed lightings models simulate the behavior of light and combine the different computed terms into the final pixel color. The three main light terms are: diffuse light (i.e., the consequence of light striking the surface of the object directly); specular light (i.e., light that appears locally in areas which reflect light towards the eye of the viewer; and, ambient light (i.e., indirect light coming from the environment). In most real time application, ambient light is assumed to be a constant.
Ambient lighting is essential, because it makes the parts of the dataset that are not directly lit, visible. For that reason, using a constant ambient light term gives better results in terms of image readability, though it tends to make the images look flat and unnatural. Ambient lighting is the consequence of light bouncing on the surrounding environment; consequently it comes from every direction. In reality, because objects features occlude each other, light form the environment cannot reach every point with a uniform intensity. Ambient occlusion, introduced by Zhukov et al. and is described in a paper entitled “An ambient light illumination model.” (In Rendering Techniques 1998, Proceedings of the Eurographics Workshop on Rendering, pps 45-55), which defines the amount of ambient light that can reach a given point of the surface of an object. It is used to modulate the intensity of the ambient light to achieve a more believable ambient light term. Computing ambient occlusion is a global illumination problem. A basic definition of the ambient occlusion term for the points of a surface is the amount of rays that can be cast from that point and that can reach a certain distance without being stopped.
In classical surface rendering, ambient occlusion is computed on each point of a surface with a technique known as Monte Carlo ray tracing. This approach consists in casting a certain amount of rays in a stochastic fashion from a hemisphere aligned locally with the surface. It is usually a lengthy operation. As ambient occlusion is view independent, it is usually baked in a 2D texture map.
The effect of ambient light on volume data was introduced in the form of so called vicinity shading (“Vicinity Shading for Enhanced Perception of Volumetric Data”, A. James Stewart, IEEE Visualization 2003). However the pre-processing time of this method is approximately 1 hour for relatively small data sets. Also, the method does not allow free manipulation of the transfer function without re-computation of the “vicinity” volume (which means that the long pre-processing time is repeated for at least some transfer function manipulations).